package br.senai.sc.web.charts;

import java.awt.Color;
import java.awt.Font;
import java.awt.Paint;
import java.text.DecimalFormat;

import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.ui.TextAnchor;

import br.senai.sc.controller.Qualidade;

/**
 * Essa classe foi criada para renderizar os gráficos de barras para as qualidades. Permitindo alterar a cor da barra
 * de acordo com a qualidade e também a cor do label com o valor.
 * 
 * @see http://www.java2s.com/Code/Java/Chart/JFreeChartBarChartDemo3differentcolorswithinaseries.htm
 * @author Fernando Marquardt &lt;fernando.marquardt@sc.senai.br&gt;
 * @since 17/02/2012
 * @version $Id: QualidadeBarRenderer.java 28 2012-03-07 20:48:20Z fernando.marquardt $
 */
public class QualidadeBarRenderer extends BarRenderer3D {

    private static final long serialVersionUID = 1L;

    private Qualidade[] qualidades;

    public QualidadeBarRenderer(Qualidade[] qualidades) {
        this.qualidades = qualidades;

        setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", new DecimalFormat("##.##")));
        setBaseItemLabelsVisible(true);
        getBaseItemLabelFont().deriveFont(Font.BOLD);
        setBaseItemLabelPaint(Color.WHITE);
        setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER));
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Paint getItemPaint(int row, int column) {
        return qualidades[column % qualidades.length].getCor();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Paint getItemLabelPaint(int row, int column) {
        return qualidades[column % qualidades.length].getCorTexto();
    }
}